package picture2013.p1_6;

public class Picture {

    private int width;
    private int height;
    private char[][] view;

    //1. При создании рисунка указывается его размер: высота и ширина, и символ, которым изначально заполнен рисунок
    public Picture(int width, int height, char c) {
        this.width = width;
        this.height = height;

        //сначала строки (их height штук) потом столбцы (их width штук)
        view = new char[height][width];

        //заполним рисунок символом с
        drawRect(0, 0, width, height, c);
    }

    //1. У созданного рисунка можно узнать его высоту и ширину.
    public int getWidth() {
        return width;
    }

    //1. У созданного рисунка можно узнать его высоту и ширину.
    public int getHeight() {
        return height;
    }

    //2. Рисунок можно напечатать на экране, все символы массива выводятся на экран.
    public void print() {
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < width; j++)
                System.out.print(view[i][j]);
            System.out.println();
        }

        System.out.println();
    }

    //3. На рисунке можно нарисовать ... заполненный прямоугольник
    //Указываем левый верхний угол, высоту и ширину прямоугольника, символ для заполнения
    public void drawRect(int x0, int y0, int width, int height, char c) {
        for (int x = x0; x < x0 + width; x++)
            for (int y = y0; y < y0 + height; y++)
                view[y][x] = c; //y - это номер строки, x - номер столбца
    }

    //3. На рисунке можно нарисовать горизонтальную, вертикальную линии
    public void drawHorizontalLine(int x0, int y0, int length, char c) {
        drawRect(x0, y0, length, 1, c);
    }

    //3. На рисунке можно нарисовать горизонтальную, вертикальную линии
    public void drawVerticalLine(int x0, int y0, int length, char c) {
        drawRect(x0, y0, 1, length, c);
    }

    //4. Можно нарисовать отдельный символ в заданном месте рисунка.
    public void drawPoint(int x0, int y0, char c) {
        view[y0][x0] = c;
    }

    //4. Можно узнать, какой символ нарисован в заданном месте рисунка.
    public char getPoint(int x0, int y0) {
        return view[y0][x0];
    }

    //6. На одном рисунке можно нарисовать другой рисунок в указанном месте.
    public void drawPicture(int x0, int y0, Picture picture) {
        for (int x = 0; x < picture.getWidth(); x++)
            for (int y = 0; y < picture.getHeight(); y++)
                view[y0 + y][x0 + x] = picture.view[y][x];
    }
}